Mobile phone operating systems provide access to phone services such as the ability to place and receive telephone calls, send and receive text messages, and browse web pages. In addition, such operating systems typically manage personal information used by the services such as telephone numbers, recently dialed telephone numbers, email addresses, and the like. Software programs can be written to access this information and the services through application programming interfaces provided by the operating systems, however, such programs are characteristically not directly portable from one operating system to another. Moreover, such programming interfaces are commonly synchronous, meaning that programs that utilize them are required to block until an operating system function call returns.